package edu.jhu.agiga; import java.util.Arrays; import java.util.logging.ConsoleHandler; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.LogRecord; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; public class Util { private Util() { // Private constructor. } public static boolean safeEquals(Object a, Object b) { if (a == null && b == null) { return true; } else if (a == null) { return false; } else if (b == null) { return false; } else { return a.equals(b); } } public static int safeHashCode(Object... objects) { return Arrays.hashCode(objects); } public static void initializeLogging() { initializeLogging(Level.INFO); } public static void initializeLogging(Level consoleLevel) { LogManager.getLogManager().reset(); SimpleFormatter sf = new SimpleFormatter() { private final long startMillis = System.currentTimeMillis(); public String format(LogRecord record) { StringBuilder sb = new StringBuilder(); sb.append(record.getMillis() - startMillis); sb.append(" "); sb.append(String.format("%-7s", record.getLevel())); sb.append(" "); sb.append(record.getLoggerName()); sb.append(" - "); sb.append(record.getMessage()); sb.append("\n"); return sb.toString(); } }; Handler ch = new ConsoleHandler(); ch.setFormatter(sf); Logger globalLog = Logger.getLogger(""); globalLog.addHandler(ch); ch.setLevel(consoleLevel); } }